热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

副标题|重力_Android5.X新特性详解——Toolbar

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Android5.X新特性详解——Toolbar相关的知识,希望对你有一定的参考价值。Toolbar与ActionB

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Android 5.X 新特性详解——Toolbar相关的知识,希望对你有一定的参考价值。


Toolbar与ActionBar最大的区别就是Toolbar更加自由、可控。这也是Google在逐渐使用Toolbar替换ActionBar的原因,要使用Toolbar必须引入appcompat-v7支持,并设置主题为NoActionBar,因此在styles.xml文件中,使用如下所示代码进行设置。

<resources>
<style name&#61;"AppTheme" parent&#61;"Theme.AppCompat.Light.NoActionBar">
--
toolbar颜色 -->
<item name&#61;"android:colorPrimary">#4876FFitem>
-- 状态栏颜色 -->
<item name&#61;"android:colorPrimaryDark">#3A5FCDitem>
-- 窗口的背景颜色 -->
<item name&#61;"android:windowBackground">&#64;android:color/white

"android:searchViewStyle"
>&#64;style/MySearchView
style>

<style name&#61;"MySearchView" parent&#61;"Widget.AppCompat.SearchView" />
resources
>

菜单配置与ActionBar基本类似&#xff0c;代码如下所示&#xff1a;

"http://schemas.android.com/apk/res/android"
xmlns:app&#61;"http://schemas.android.com/apk/res-auto"
xmlns:tools&#61;"http://schemas.android.com/tools"
tools:context&#61;".MainActivity">
<item
android:id&#61;"&#64;&#43;id/ab_search"
android:orderInCategory&#61;"80"
android:title&#61;"action_search"
app:actionViewClass&#61;"android.support.v7.widget.SearchView"
app:showAsAction&#61;"ifRoom" />
<item
android:id&#61;"&#64;&#43;id/action_share"
android:orderInCategory&#61;"90"
android:title&#61;"action_share"
app:actionProviderClass&#61;"android.support.v7.widget.ShareActionProvider"
app:showAsAction&#61;"ifRoom" />
<item
android:id&#61;"&#64;&#43;id/action_settings"
android:orderInCategory&#61;"100"
android:title&#61;"&#64;string/action_settings"
app:showAsAction&#61;"never" />

使用Toolbar的核心代码如下所示&#xff1a;

public class MainActivity extends AppCompatActivity
private Toolbar mToolbar;
private DrawerLayout mDrawerLayout;
private ActionBarDrawerToggle mDrawerToggle;
private ShareActionProvider mShareActionProvider;
&#64;Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mToolbar &#61; (Toolbar) findViewById(R.id.toolbar);
mToolbar.setLogo(R.mipmap.ic_launcher);
// 标题的文字需在setSupportActionBar之前&#xff0c;不然会无效
mToolbar.setTitle("主标题");
mToolbar.setSubtitle("副标题");
//通过setSupportActionBar方法就可以用Toolbar模拟出ActionBar的效果
setSupportActionBar(mToolbar);
/**
* 将Toolbar与DrawerLayout结合起来&#xff0c;实现android 5.X 中DrawerToggle状态变化的动态效果&#xff0c;即最左边的
* Toggle在DrawerLayout滑动时&#xff0c;会从三条横线间变成一个箭头状的图案。
*/

getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mDrawerLayout &#61; (DrawerLayout) findViewById(R.id.drawer);
mDrawerToggle &#61; new ActionBarDrawerToggle(this, mDrawerLayout, mToolbar,
R.string.abc_action_bar_home_description,
R.string.abc_action_bar_home_description_format);
mDrawerToggle.syncState();
mDrawerLayout.setDrawerListener(mDrawerToggle);
// 菜单的监听可以在toolbar里设置&#xff0c;
// 也可通过Activity的onOptionsItemSelected回调方法来处理
mToolbar.setOnMenuItemClickListener(
new Toolbar.OnMenuItemClickListener()
&#64;Override
public boolean onMenuItemClick(MenuItem item)
switch (item.getItemId())
case R.id.action_settings:
Toast.makeText(MainActivity.this, "action_settings", Toast.LENGTH_SHORT).show();
break;
default:
break;

return true;
);

&#64;Override
public boolean onCreateOptionsMenu(Menu menu)
getMenuInflater().inflate(R.menu.menu_main, menu);
//ShareActionProvider配置
mShareActionProvider &#61; (ShareActionProvider) MenuItemCompat.getActionProvider(menu.findItem(R.id.action_share));
Intent intent &#61; new Intent(Intent.ACTION_SEND);
intent.setType("text/*");
mShareActionProvider.setShareIntent(intent);
return super.onCreateOptionsMenu(menu);

布局文件如下所示&#xff1a;

<LinearLayout xmlns:android&#61;"http://schemas.android.com/apk/res/android"
xmlns:tools&#61;"http://schemas.android.com/tools"
android:layout_width&#61;"match_parent"
android:layout_height&#61;"match_parent"
android:orientation&#61;"vertical"
tools:context&#61;".MainActivity">

<include layout&#61;"&#64;layout/toolbar" />
<android.support.v4.widget.DrawerLayout
android:id&#61;"&#64;&#43;id/drawer"
android:layout_width&#61;"match_parent"
android:layout_height&#61;"match_parent">


<LinearLayout
android:layout_width&#61;"match_parent"
android:layout_height&#61;"match_parent"
android:background&#61;"&#64;android:color/holo_blue_light"
android:orientation&#61;"vertical" >

<Button
android:layout_width&#61;"100dp"
android:layout_height&#61;"match_parent"
android:text&#61;"内容界面"/>

LinearLayout>

<LinearLayout
android:id&#61;"&#64;&#43;id/drawer_view"
android:layout_width&#61;"match_parent"
android:layout_height&#61;"match_parent"
android:layout_gravity&#61;"start"
android:orientation&#61;"vertical" >

<Button
android:layout_width&#61;"200dp"
android:layout_height&#61;"match_parent"
android:text&#61;"菜单界面"/>

LinearLayout>
android.support.v4.widget.DrawerLayout>
LinearLayout>

.support.v7.widget.Toolbar xmlns:android&#61;"http://schemas.android.com/apk/res/android"
xmlns:app&#61;"http://schemas.android.com/apk/res-auto"
android:id&#61;"&#64;&#43;id/toolbar"
android:layout_width&#61;"match_parent"
android:layout_height&#61;"wrap_content"
android:background&#61;"?attr/colorPrimary"
android:minHeight&#61;"?attr/actionBarSize"
app:popupTheme&#61;"&#64;style/ThemeOverlay.AppCompat.Light"
app:theme&#61;"&#64;style/ThemeOverlay.AppCompat.ActionBar" />

程序运行效果如下所示&#xff1a;

代码地址


推荐阅读
author-avatar
rert
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有